1 Introduction - Gas Station Data

In this analysis, we will be looking at gas station data which consists of 72,798 records and 30 feature variables with 1 binary outcome variable. A map was created based on a random sample of 500 gas stations in the US.

2 Data Preparation

Importing the data set:

poc<-read.csv(url("https://melaniemiller1.github.io/STA533/w07-HW/POC.csv"))

Take random sample of 500 gas stations in the US:

sample500<- poc[sample(nrow(poc), 500), ]

3 Gas Stations in the US - leaflet

label.msg <- ~paste(sample500$ADDRESS,",", sample500$county, sample500$STATE,",",sample500$ZIPnew)

leaflet(sample500) %>%
  addTiles() %>% 
  setView(lng=mean(sample500$xcoord), lat=mean(sample500$ycoord), zoom = 14) %>%
   addRectangles(
    lng1 = min(sample500$xcoord), lat1 = min(sample500$ycoord),
    lng2 = max(sample500$xcoord), lat2 = max(sample500$ycoord),
    fillColor = "transparent" 
    ) %>%
  fitBounds(
    lng1 = min(sample500$xcoord), lat1 = min(sample500$ycoord),
    lng2 = max(sample500$xcoord), lat2 = max(sample500$ycoord) ) %>%
  addMarkers(~xcoord, ~ycoord, label = label.msg)

From this plot of a random sample of gas stations in the US, the sample shows that there is a higher proportion of gas stations in the east coast. There is a lot of sparse space in the midwest, while there is hardly any areas on the east coast without any gas stations.

4 Gas Stations in the US - plotly

#library(plotly)

g <- list(      scope = 'usa',
           projection = list(type = 'albers usa'),
             showland = TRUE,
            landcolor = toRGB("gray95"),
         subunitcolor = toRGB("gray85"),
         countrycolor = toRGB("gray85"),
         countrywidth = 0.5,
         subunitwidth = 0.5
       )
###
fig <- plot_geo(sample500, lat = ~ycoord, lon = ~xcoord) %>% 
  add_markers( text = ~paste(STATE, county, ADDRESS, ZIPnew, 
                             sep = "<br>"),
  
              hoverinfo = "text")   %>% 

  layout( title = 'Gas Stations in the United States', 
          geo = g )

fig

Here is another example of plotting the same data in a different mapping format.

5 Philly Crime Data

In this analysis, we will be looking at Philly Crime data which consists of 15,520 records and 18 variables and contains crime cases since 2015.A map was created based on a subset of data only in 2023.

6 Data Preparation

Importing Philly Crime Since 2015 data

phillycrime<-read.csv(url("https://melaniemiller1.github.io/STA533/w07-HW/PhillyCrimeSince2015.csv"))

Extract information of year from the variable date and then add the new variable year to the data set

year<- format(as.Date(phillycrime$date, format="%m/%d/%Y"),"%Y")

phillycrime<- cbind(phillycrime, year)

Subset only containing 2023 data

philly2023<- phillycrime %>%
             filter(year == 2023)

7 Map of Crime in Philly in 2023

pal <- c("orange", "navy")
pal[which(philly2023$fatal=="Nonfatal")] <- "navy"
pal[which(philly2023$fatal=="Fatal")] <- "orange"

label.msg <- paste("Neighborhood:", philly2023$neighborhood,
                   "<br> Race:",philly2023$race)



leaflet(philly2023) %>% 
  addTiles() %>%
  setView(lng=-75.1652, lat=39.9526, zoom = 10.5) %>%
  
    addCircleMarkers(
            ~lng, 
            ~lat,
            color = pal,
            stroke = FALSE, 
            fillOpacity = 0.4,
            label = ~paste("Neighborhood:", neighborhood, 
                           "Sex:", sex, 
                           "Race:", race, 
                           "Age:", age))  %>%

  addLegend(position = "bottomright", 
            colors = c("orange", "navy"),
            labels= c("Fatal", "Nonfatal"),
            title= "Fatal",
            opacity = 0.4)  

This map shows the crime in Philly in 2023. The navy points are nonfatal crimes, while the orange are fatal crimes. BY looking at the map visually, it appears there are more nonfatal crimes in 2023, however there are still many prominent fatal crimes.

LS0tDQp0aXRsZTogIlNUQSA1MzMgSG9tZXdvcmsgNyINCmF1dGhvcjogIk1lbGFuaWUgTWlsbGVyIg0KZGF0ZTogIldlc3QgQ2hlc3RlciBVbml2ZXJzaXR5Ig0Kb3V0cHV0OiANCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDogeWVzDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICB0b2NfY29sbGFwc2VkOiB5ZXMNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICBzbW9vdGhfc2Nyb2xsOiB0cnVlDQogICAgdGhlbWU6IGx1bWVuDQplZGl0b3Jfb3B0aW9uczoNCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGlubGluZQ0KLS0tDQoNCg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCg0KLyogVGFibGUgb2YgY29udGVudCAtIG5hdmlnYXRpb24gKi8NCmRpdiNUT0MgbGkgew0KICAgIGxpc3Qtc3R5bGU6bm9uZTsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Z3JheTsNCiAgICBiYWNrZ3JvdW5kLWltYWdlOm5vbmU7DQogICAgYmFja2dyb3VuZC1yZXBlYXQ6bm9uZTsNCiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOjA7DQogICAgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7DQogICAgY29sb3I6ICM3ODBjMGM7DQp9DQoNCg0KLyogVGl0bGUgZm9udHMgKi8NCmgxLnRpdGxlIHsNCiAgZm9udC1zaXplOiAyNHB4Ow0KICBjb2xvcjogZGFya2JsdWU7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7DQogIGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7DQp9DQpoNC5hdXRob3IgeyANCiAgZm9udC1zaXplOiAxOHB4Ow0KICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCiAgY29sb3I6IG5hdnk7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCn0NCmg0LmRhdGUgeyANCiAgZm9udC1zaXplOiAxOHB4Ow0KICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCiAgY29sb3I6IGRhcmtibHVlOw0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQoNCi8qIFNlY3Rpb24gaGVhZGVycyAqLw0KaDEgew0KICAgIGZvbnQtc2l6ZTogMjJweDsNCiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgICBjb2xvcjogZGFya3JlZDsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQpoMiB7DQogICAgZm9udC1zaXplOiAxOHB4Ow0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBuYXZ5Ow0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCmgzIHsgDQogICAgZm9udC1zaXplOiAxNXB4Ow0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBkYXJrcmVkOw0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCmg0IHsNCiAgICBmb250LXNpemU6IDE4cHg7DQogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogICAgY29sb3I6IGRhcmtyZWQ7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCjwvc3R5bGU+DQoNCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQojIGNvZGUgY2h1bmsgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIFIgY29kZSwgd2FybmluZ3MsIGFuZCBvdXRwdXQgDQojIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIG91dHB1dCBmaWxlcy4NCmlmICghcmVxdWlyZSgidGlkeXZlcnNlIikpIHsNCiAgIGluc3RhbGwucGFja2FnZXMoInRpZHl2ZXJzZSIpDQogICBsaWJyYXJ5KHRpZHl2ZXJzZSkNCn0NCmlmICghcmVxdWlyZSgia25pdHIiKSkgew0KICAgaW5zdGFsbC5wYWNrYWdlcygia25pdHIiKQ0KICAgbGlicmFyeShrbml0cikNCn0NCmlmICghcmVxdWlyZSgianBlZyIpKSB7DQogICBpbnN0YWxsLnBhY2thZ2VzKCJqcGVnIiwgZGVwZW5kZW5jaWVzID0gVFJVRSkNCiAgIGxpYnJhcnkoanBlZykNCn0NCg0KaWYgKCFyZXF1aXJlKCJSQ3VybCIpKSB7DQogICBpbnN0YWxsLnBhY2thZ2VzKCJSQ3VybCIsIGRlcGVuZGVuY2llcyA9IFRSVUUpDQogICBsaWJyYXJ5KFJDdXJsKQ0KfQ0KDQppZiAoIXJlcXVpcmUoInBsb3RseSIpKSB7DQogICBpbnN0YWxsLnBhY2thZ2VzKCJwbG90bHkiLCBkZXBlbmRlbmNpZXMgPSBUUlVFKQ0KICAgbGlicmFyeShwbG90bHkpDQp9DQppZiAoIXJlcXVpcmUoImxlYWZsZXQiKSkgew0KICAgIGluc3RhbGwucGFja2FnZXMoImxlYWZsZXQiKSAgICAgICAgICAgICAgDQogICAgbGlicmFyeSgibGVhZmxldCIpDQp9DQppZiAoIXJlcXVpcmUoInRtYXAiKSkgew0KICAgIGluc3RhbGwucGFja2FnZXMoInRtYXAiKSAgICAgICAgICAgICAgDQogICAgbGlicmFyeSgidG1hcCIpDQp9DQoNCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSwgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgd2FybmluZyA9IEZBTFNFLCAgIA0KICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFRSVUUsICAgDQogICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IEZBTFNFLA0KICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBOQSkNCmBgYA0KDQoNCiMgSW50cm9kdWN0aW9uIC0gR2FzIFN0YXRpb24gRGF0YQ0KSW4gdGhpcyBhbmFseXNpcywgd2Ugd2lsbCBiZSBsb29raW5nIGF0IGdhcyBzdGF0aW9uIGRhdGEgd2hpY2ggY29uc2lzdHMgb2YgNzIsNzk4IHJlY29yZHMgYW5kIDMwIGZlYXR1cmUgdmFyaWFibGVzIHdpdGggMSBiaW5hcnkgb3V0Y29tZSB2YXJpYWJsZS4gQSBtYXAgd2FzIGNyZWF0ZWQgYmFzZWQgb24gYSByYW5kb20gc2FtcGxlIG9mIDUwMCBnYXMgc3RhdGlvbnMgaW4gdGhlIFVTLg0KDQoNCiMgRGF0YSBQcmVwYXJhdGlvbg0KDQpJbXBvcnRpbmcgdGhlIGRhdGEgc2V0Og0KYGBge3J9DQpwb2M8LXJlYWQuY3N2KHVybCgiaHR0cHM6Ly9tZWxhbmllbWlsbGVyMS5naXRodWIuaW8vU1RBNTMzL3cwNy1IVy9QT0MuY3N2IikpDQpgYGANCg0KDQpUYWtlIHJhbmRvbSBzYW1wbGUgb2YgNTAwIGdhcyBzdGF0aW9ucyBpbiB0aGUgVVM6DQpgYGB7cn0NCnNhbXBsZTUwMDwtIHBvY1tzYW1wbGUobnJvdyhwb2MpLCA1MDApLCBdDQpgYGANCg0KDQojIEdhcyBTdGF0aW9ucyBpbiB0aGUgVVMgLSBsZWFmbGV0DQpgYGB7cn0NCmxhYmVsLm1zZyA8LSB+cGFzdGUoc2FtcGxlNTAwJEFERFJFU1MsIiwiLCBzYW1wbGU1MDAkY291bnR5LCBzYW1wbGU1MDAkU1RBVEUsIiwiLHNhbXBsZTUwMCRaSVBuZXcpDQoNCmxlYWZsZXQoc2FtcGxlNTAwKSAlPiUNCiAgYWRkVGlsZXMoKSAlPiUgDQogIHNldFZpZXcobG5nPW1lYW4oc2FtcGxlNTAwJHhjb29yZCksIGxhdD1tZWFuKHNhbXBsZTUwMCR5Y29vcmQpLCB6b29tID0gMTQpICU+JQ0KICAgYWRkUmVjdGFuZ2xlcygNCiAgICBsbmcxID0gbWluKHNhbXBsZTUwMCR4Y29vcmQpLCBsYXQxID0gbWluKHNhbXBsZTUwMCR5Y29vcmQpLA0KICAgIGxuZzIgPSBtYXgoc2FtcGxlNTAwJHhjb29yZCksIGxhdDIgPSBtYXgoc2FtcGxlNTAwJHljb29yZCksDQogICAgZmlsbENvbG9yID0gInRyYW5zcGFyZW50IiANCiAgICApICU+JQ0KICBmaXRCb3VuZHMoDQogICAgbG5nMSA9IG1pbihzYW1wbGU1MDAkeGNvb3JkKSwgbGF0MSA9IG1pbihzYW1wbGU1MDAkeWNvb3JkKSwNCiAgICBsbmcyID0gbWF4KHNhbXBsZTUwMCR4Y29vcmQpLCBsYXQyID0gbWF4KHNhbXBsZTUwMCR5Y29vcmQpICkgJT4lDQogIGFkZE1hcmtlcnMofnhjb29yZCwgfnljb29yZCwgbGFiZWwgPSBsYWJlbC5tc2cpDQpgYGANCg0KRnJvbSB0aGlzIHBsb3Qgb2YgYSByYW5kb20gc2FtcGxlIG9mIGdhcyBzdGF0aW9ucyBpbiB0aGUgVVMsIHRoZSBzYW1wbGUgc2hvd3MgdGhhdCB0aGVyZSBpcyBhIGhpZ2hlciBwcm9wb3J0aW9uIG9mIGdhcyBzdGF0aW9ucyBpbiB0aGUgZWFzdCBjb2FzdC4gVGhlcmUgaXMgYSBsb3Qgb2Ygc3BhcnNlIHNwYWNlIGluIHRoZSBtaWR3ZXN0LCB3aGlsZSB0aGVyZSBpcyBoYXJkbHkgYW55IGFyZWFzIG9uIHRoZSBlYXN0IGNvYXN0IHdpdGhvdXQgYW55IGdhcyBzdGF0aW9ucy4gDQoNCg0KIyBHYXMgU3RhdGlvbnMgaW4gdGhlIFVTIC0gcGxvdGx5DQpgYGB7cn0NCiNsaWJyYXJ5KHBsb3RseSkNCg0KZyA8LSBsaXN0KCAgICAgIHNjb3BlID0gJ3VzYScsDQogICAgICAgICAgIHByb2plY3Rpb24gPSBsaXN0KHR5cGUgPSAnYWxiZXJzIHVzYScpLA0KICAgICAgICAgICAgIHNob3dsYW5kID0gVFJVRSwNCiAgICAgICAgICAgIGxhbmRjb2xvciA9IHRvUkdCKCJncmF5OTUiKSwNCiAgICAgICAgIHN1YnVuaXRjb2xvciA9IHRvUkdCKCJncmF5ODUiKSwNCiAgICAgICAgIGNvdW50cnljb2xvciA9IHRvUkdCKCJncmF5ODUiKSwNCiAgICAgICAgIGNvdW50cnl3aWR0aCA9IDAuNSwNCiAgICAgICAgIHN1YnVuaXR3aWR0aCA9IDAuNQ0KICAgICAgICkNCiMjIw0KZmlnIDwtIHBsb3RfZ2VvKHNhbXBsZTUwMCwgbGF0ID0gfnljb29yZCwgbG9uID0gfnhjb29yZCkgJT4lIA0KICBhZGRfbWFya2VycyggdGV4dCA9IH5wYXN0ZShTVEFURSwgY291bnR5LCBBRERSRVNTLCBaSVBuZXcsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXAgPSAiPGJyPiIpLA0KICANCiAgICAgICAgICAgICAgaG92ZXJpbmZvID0gInRleHQiKSAgICU+JSANCg0KICBsYXlvdXQoIHRpdGxlID0gJ0dhcyBTdGF0aW9ucyBpbiB0aGUgVW5pdGVkIFN0YXRlcycsIA0KICAgICAgICAgIGdlbyA9IGcgKQ0KDQpmaWcNCmBgYA0KDQpIZXJlIGlzIGFub3RoZXIgZXhhbXBsZSBvZiBwbG90dGluZyB0aGUgc2FtZSBkYXRhIGluIGEgZGlmZmVyZW50IG1hcHBpbmcgZm9ybWF0Lg0KDQoNCg0KIyBQaGlsbHkgQ3JpbWUgRGF0YQ0KSW4gdGhpcyBhbmFseXNpcywgd2Ugd2lsbCBiZSBsb29raW5nIGF0IFBoaWxseSBDcmltZSBkYXRhIHdoaWNoIGNvbnNpc3RzIG9mIDE1LDUyMCByZWNvcmRzIGFuZCAxOCB2YXJpYWJsZXMgYW5kIGNvbnRhaW5zIGNyaW1lIGNhc2VzIHNpbmNlIDIwMTUuQSBtYXAgd2FzIGNyZWF0ZWQgYmFzZWQgb24gYSBzdWJzZXQgb2YgZGF0YSBvbmx5IGluIDIwMjMuDQoNCg0KIyBEYXRhIFByZXBhcmF0aW9uDQpJbXBvcnRpbmcgUGhpbGx5IENyaW1lIFNpbmNlIDIwMTUgZGF0YQ0KYGBge3J9DQpwaGlsbHljcmltZTwtcmVhZC5jc3YodXJsKCJodHRwczovL21lbGFuaWVtaWxsZXIxLmdpdGh1Yi5pby9TVEE1MzMvdzA3LUhXL1BoaWxseUNyaW1lU2luY2UyMDE1LmNzdiIpKQ0KYGBgDQoNCg0KRXh0cmFjdCBpbmZvcm1hdGlvbiBvZiB5ZWFyIGZyb20gdGhlIHZhcmlhYmxlIGRhdGUgYW5kIHRoZW4gYWRkIHRoZSBuZXcgdmFyaWFibGUgeWVhciB0byB0aGUgZGF0YSBzZXQNCmBgYHtyfQ0KeWVhcjwtIGZvcm1hdChhcy5EYXRlKHBoaWxseWNyaW1lJGRhdGUsIGZvcm1hdD0iJW0vJWQvJVkiKSwiJVkiKQ0KDQpwaGlsbHljcmltZTwtIGNiaW5kKHBoaWxseWNyaW1lLCB5ZWFyKQ0KYGBgDQoNCg0KU3Vic2V0IG9ubHkgY29udGFpbmluZyAyMDIzIGRhdGENCmBgYHtyfQ0KcGhpbGx5MjAyMzwtIHBoaWxseWNyaW1lICU+JQ0KICAgICAgICAgICAgIGZpbHRlcih5ZWFyID09IDIwMjMpDQpgYGANCg0KDQojIE1hcCBvZiBDcmltZSBpbiBQaGlsbHkgaW4gMjAyMw0KDQpgYGB7cn0NCnBhbCA8LSBjKCJvcmFuZ2UiLCAibmF2eSIpDQpwYWxbd2hpY2gocGhpbGx5MjAyMyRmYXRhbD09Ik5vbmZhdGFsIildIDwtICJuYXZ5Ig0KcGFsW3doaWNoKHBoaWxseTIwMjMkZmF0YWw9PSJGYXRhbCIpXSA8LSAib3JhbmdlIg0KDQpsYWJlbC5tc2cgPC0gcGFzdGUoIk5laWdoYm9yaG9vZDoiLCBwaGlsbHkyMDIzJG5laWdoYm9yaG9vZCwNCiAgICAgICAgICAgICAgICAgICAiPGJyPiBSYWNlOiIscGhpbGx5MjAyMyRyYWNlKQ0KDQoNCg0KbGVhZmxldChwaGlsbHkyMDIzKSAlPiUgDQogIGFkZFRpbGVzKCkgJT4lDQogIHNldFZpZXcobG5nPS03NS4xNjUyLCBsYXQ9MzkuOTUyNiwgem9vbSA9IDEwLjUpICU+JQ0KICANCiAgICBhZGRDaXJjbGVNYXJrZXJzKA0KICAgICAgICAgICAgfmxuZywgDQogICAgICAgICAgICB+bGF0LA0KICAgICAgICAgICAgY29sb3IgPSBwYWwsDQogICAgICAgICAgICBzdHJva2UgPSBGQUxTRSwgDQogICAgICAgICAgICBmaWxsT3BhY2l0eSA9IDAuNCwNCiAgICAgICAgICAgIGxhYmVsID0gfnBhc3RlKCJOZWlnaGJvcmhvb2Q6IiwgbmVpZ2hib3Job29kLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZXg6Iiwgc2V4LCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWNlOiIsIHJhY2UsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFnZToiLCBhZ2UpKSAgJT4lDQoNCiAgYWRkTGVnZW5kKHBvc2l0aW9uID0gImJvdHRvbXJpZ2h0IiwgDQogICAgICAgICAgICBjb2xvcnMgPSBjKCJvcmFuZ2UiLCAibmF2eSIpLA0KICAgICAgICAgICAgbGFiZWxzPSBjKCJGYXRhbCIsICJOb25mYXRhbCIpLA0KICAgICAgICAgICAgdGl0bGU9ICJGYXRhbCIsDQogICAgICAgICAgICBvcGFjaXR5ID0gMC40KSAgDQoNCg0KYGBgDQoNCg0KVGhpcyBtYXAgc2hvd3MgdGhlIGNyaW1lIGluIFBoaWxseSBpbiAyMDIzLiBUaGUgbmF2eSBwb2ludHMgYXJlIG5vbmZhdGFsIGNyaW1lcywgd2hpbGUgdGhlIG9yYW5nZSBhcmUgZmF0YWwgY3JpbWVzLiBCWSBsb29raW5nIGF0IHRoZSBtYXAgdmlzdWFsbHksIGl0IGFwcGVhcnMgdGhlcmUgYXJlIG1vcmUgbm9uZmF0YWwgY3JpbWVzIGluIDIwMjMsIGhvd2V2ZXIgdGhlcmUgYXJlIHN0aWxsIG1hbnkgcHJvbWluZW50IGZhdGFsIGNyaW1lcy4gDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQo=